Inkjet printers and laser printers are capable of producing full color images with high quality and precision. Such color printers are controlled by a printer driver program which provides an interface between an application program running on a host processor and the printer.
RGB is a color space that uses as its primary colors red, green, and blue. These three colors are the primary "additive" colors. In devices that use projected light to produce an image (for example, televisions or computer monitors), the complete spectrum of colors can be reproduced using red, green, and blue. Red and green combine to form yellow, red and blue to form magenta, green and blue to form cyan, and all three to form white. Any other shade can be produced by combining different amounts of the three primary colors.
Digital half-toning refers to any process that creates the illusion of continuous tone images or shades by judicious arrangement of binary picture elements, such as dots in the case of laser printers, and ink drops in the case of inkjet printers. Thus, half-toning is printing the simulation of a continuous-tone image, such as a shaded drawing or a photograph, with groups or cells of color or black dots. The dots are placed in such a way that they appear to the human eye to be a single color. Digital half-toning is sometimes referred to as dithering.
Dithering or half-toning can be used to reproduce gray shades using only black ink. Dithers are implemented by use of a dither cell, also known as a dither matrix or threshold array. In a monochrome printer, various gray levels are generated using a so-called super-pixel paint brush typically having a defined dimension such as 16.times.16. A super-pixel paint brush (also referred to as a super-pixel) is generated from two inputs. The first input is a relative gray request in the form of an index typically called an Index Direct Gray having a range of index or input values. The second input is a threshold array having a plurality of elements for holding values. Typically, each entry corresponds to a pixel in the super-pixel. Individual pixels in the super-pixel are white only when the index or input value exceeds the corresponding value in the threshold array. Otherwise, individual pixels are black. Other polarity choices or selections are possible.
As an example, consider a threshold array which is 16.times.16 in dimension having a total of 256 elements. Each element would be capable of holding a value in the range of between 1 to 254. An index for use with such a threshold array would have a range of values from 0 to 255. To effect printing of a particular super-pixel, a selected index value would be compared with each threshold array element value for the purpose of turning a corresponding pixel in a pixel pattern bit map either "on" or "off". A corresponding pixel pattern bit map would then be processed for forming video strips which are used for painting or imaging source objects with a selected gray level or color. For example, for an index value of 1, all pixels in the 16.times.16 super-pixel would be marked black that do not match a 1 value in the threshold array. Likewise, when the index value is 2, all pixels corresponding to values 1 or 2 would be marked black. This comparison continues up through the value of 255 when no pixels in the 16.times.16 super-pixel would be marked black (i.e., they would all be white). The algorithm used here is that if the input index is greater than the dither matrix cell entry, black is selected, else white is selected. Other similar algorithms or polarities can accomplish the same end. This implementation is for illustration of one efficient method.
Throughout the range of index or input values, a duplicate super-pixel is generated whenever an index value is missing from the threshold array. For example, suppose that the index value 3 did not appear in the threshold array, but that values 2 and 4 did. Then, the super-pixel generated for index value 2 would be the same as that generated for index value 3 because using the threshold of either 2 or 3 would compare the same. Threshold array sizes may vary, but it is normal to keep the range of elements of the threshold array from 1 to 254, as long as such a range is more than the human eye can discriminate. Accordingly, this corresponds to 254 possible grays, plus black and white. For purposes of ongoing discussion, black and white are considered as possible grays so that the total is 256.
It has become a recognized practice to eliminate index values from a threshold array because the human eye simply cannot distinguish the full set of 256 gray levels. Each missing index value, however, results in one additional duplicate pattern being generated by the printer.
Previously, the approach taken was to generate the complete set of grays, i.e. 256 gray levels, which wasted precious printer memory because a multiplicity of duplicate patterns were generated. A simple attempt to eliminate the duplicates by proportionally scaling the index values to the maximum number of gray levels introduces errors because of the non-linear distribution of grays. That is, when a threshold array is developed, the resulting unique set of grays is usually not constrained to map linearly from the gray index. Usually, the duplicates are distributed non-linearly with higher density in the lighter grays where the human eye can discriminate differences with more acuity.
Thus, there is a need to improve the manner in which threshold arrays are processed for producing super-pixels which correctly reduce or eliminate the number of duplicate patterns generated.